Methods and systems for placing calls

ABSTRACT

Systems and methods are disclosed that can create, using a server, a record on a remote server associating a caller&#39;s phone number, a provider phone number, and a target phone number. Using a caller&#39;s device, a call can be placed to the provider phone number with the caller&#39;s phone number. A cloud telephony provider associated with the provider phone number can forward the call to the target phone number. Platform features available using the provider system can be available during the call.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation to U.S. application Ser. No. 16/558,692 filed on Sep. 3, 2019, titled “METHODS AND SYSTEMS FOR PLACING CALLS.” All of the foregoing are incorporated herein by reference in its entirety.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 illustrates a system 100 that can be used to place a call to a target, according to aspects of the disclosure.

FIG. 2 illustrates a general method that can be used to place a call to a target, according to aspects of the disclosure.

FIG. 3 illustrates a detailed example of a method that can be used to place a call to a target, according to aspects of the disclosure.

DETAILED DESCRIPTION OF EMBODIMENTS

FIG. 1 illustrates a system 100 (e.g., comprising a cloud call application 170) that can be used to place a call to a target, according to aspects of the disclosure. Referring to FIG. 1, a caller can use a caller device 110 to place a call through a network (e.g., a public switched telephone network (PSTN)) to a target on a target device 130. The caller can use a calling application 150 (e.g., which can be a mobile application on a mobile device). The calling application 150 can communicate (e.g., through the network) with a cloud call application server 170. The calling application 150 can create a record for each call made using the cloud call application server 170. In some embodiments, the records can be stored in a database 140.

For example, in some embodiments, the record can be created, using the cloud call application server 170. The record can associate a caller's device phone number, a provider phone number, and a target phone number. The caller's device can initiate the call, using the calling application 150, to the provider phone number with the caller's device phone number. The cloud telephony provider associated with the provider phone number can forward the call to the target phone number.

In some embodiments, the provider phone number can be used for the caller phone number. In addition, the provider phone number can be a cloud phone number. In some embodiments, calls can be placed via a phone, but can be routed via a cloud communications platform. The caller's device can be a base phone, or a cell phone, a Voice over IP (VoIP) phone, or any combination thereof. The caller's device phone number can be shown as a caller phone number identifying who a call is from. A caller can also change a caller identification phone number identifying who a call is from.

FIG. 2 illustrates a general method that can be used to place a call to a target, according to aspects of the disclosure. In 205, a caller uses a calling application 150 to start placing a call. In some embodiments, the calling application 150 can be a mobile application used on a mobile device (e.g., iPhone, Android, etc.). In some embodiments, the calling application 150 can be a desktop phone application used on a desktop powered device. In 210, the calling application server 160 can create a call record. In 215, the call is placed by the caller's device to the cloud telephony provider using the calling application 150. In 220, the cloud telephony provider 160 calls back to the cloud call application, receiving the target instructions. In 225, the target receives the phone call from the caller and answers the call.

FIG. 3 illustrates a detailed example of a method that can be used to place a call to a target, according to aspects of the disclosure. In this example, the caller is named Steve, and the target is Scott. In 305, Steve wants to call Scott using the calling application 150. Scott's phone number is 111. Steve's cell number is 222, but Steve doesn't want Scott to see the number that he is calling from. Thus, Steve uses the calling application 150, which has a caller ID phone number of 333 and a second number of 444 associated with Steve. The phone number 333 can be Steve's assigned phone number within the company (e.g., SalesLoft). The phone number 444 can be a phone number that Steve's team owns. For example, this can be a number the company (e.g., SalesLoft) uses for the purposes of local dial for the company and/or for the team.

In 310, the calling application 150 can create a call record using the call application server 160. For example, the calling application 150 can send a request to the cloud telephony provider 160 to create a call record. The call record (in this example, we refer to it as R1) can include:

-   -   target_number=111 (Scott's phone number)     -   user_device_number=222 (Steve's cell number)     -   cloud_number=333 (Steve's assigned phone number in SalesLoft)     -   caller_id=444 (Steve's team's local dial number)     -   record_used_at=NULL     -   expires_at=NOW+5 Minutes

In 315, the call can be made using the calling application 150. Thus, Steve can dials the cloud number (333) using his device (222). In some embodiments, this can happen by prompting the caller (e.g., user) to dial the number. In some embodiments, caller devices can allow a user to place a call without a prompt. The call can simply start.

In 320, the cloud telephony provider 160 can forward the call to the target. Thus, for example, the cloud telephony provider 160 can get a call FROM 222 (Steve's cell) TO 333 (Steve's assigned number). The cloud telephony provider 160 can do a lookup of (FROM=222, TO=333, record_used_at=NULL, not_expired) and find the call record that was just created (R1, caller_id=444). The cloud telephony provider 160 can deactivate this record (R1) to ensure that it is only used one time (R1.record_used_at=NOW). The cloud telephony provider 160 can then forward the call to the target (111) with the provided caller ID (444).

In 325, the target can receive the phone call from the caller and answer the call. Thus, in this example, Scott can receive a phone call FROM=444, and Steve can be connected to Scott when Scott answers his phone. In this example, Scott may not know Steve's cell phone number and/or know that Steve is calling from his cell phone number. In addition, the company (e.g., SalesLoft) dialer features can still be used in the call (Local Dial, Live Call Studio, Call Recording, etc), even though Steve is not calling using the company's phone system. In this way, any and/or all features of a company platform (e.g., a Sales Engagement platform) can be made available via the calling application 150 as though the caller had placed the call directly within the company's call system.

The following are example platform dialer features that can be used. Note that many other types of dialer features can also be used. Local Dial. This can comprise a caller ID based on a target's area code.

Live Call Studio—This can comprise live coaching and participation in calls by approved users.

Call Recording—This can produce a caller-side (user) or full (user+target) call recording of a call.

Call Logging—This can comprise notes, sentiment, disposition, or custom fields, or any combination thereof, and can be recorded by the user after or during a call. Syncing of Call Logs to CRM—The call logs recorded by the user can be written to the user's external CRM (e.g., Salesforce.com, Microsoft Dynamic, etc.).

Voicemail Drop—The user can pre-record voicemails and then select a voicemail to play to the target's answering machine.

Example Pseudocode

 305   MobileAppDialer.js    function placeCall(toNumber, callContext) {     // 305     // Determine whether custom caller ID is being used     const callerIdNumber = getCallerIdNumber(toNumber)     // 305     // Create the CallRecord on the cloud application server     const call Record = CallRecord.API.create({      userDeviceNumber: callContext.userDeviceNumber,      targetNumber: toNumber,      cloudNumber: callContext.cloudNumber,      callerId: callerIdNumber     })     // Dial the user's assigned cloud number which will go to the target number in the end     // 315     Device.dialNumber(callRecord.cloudNumber)    }    function getCallerIdNumber(toPhoneNumber) {     if(localDialEnabled) {      const localDialCallerId = getLocalDialCallerId      (toPhoneNumber)      return localDialCallerId.caller_id_number     } else{      return assignedPhoneNumber     }    }    // Data Types Involved in Flow    CallContext(userDeviceNumber, cloudNumber)    CallRecord(callerId, cloudNumber, targetNumber,    userDeviceNumber)  310   CallRecordCreator:    // 310    createRecord(params) {     database.writeRecord(      userDeviceNumber: params.userDeviceNumber,      targetNumber: params.targetNumber,      cloudNumber: params.cloudNumber,      callerId: params.callerId     )    }  320   TelephoneProviderRequest:    // 320    handleProviderRequest(params) {     ifcallRecord = lookupCallRecord(params.from, params.to) {      // The flow occurred, so route the inbound call to the target      markCallRecordUsed(callRecord)      routeCallToTarget(callRecord.targetNumber,      callRecord.callerId)     } else{      // The flow didn't occur, so route the inbound call as      otherwise      routeInboundCall(params.to)     }      }    lookupCallRecord(from, to) {     database.callRecords.where(userDeviceNumber: from, cloudNumber: to).where(expired: false, used: false).first    }    markCallRecordUsed(callRecord) {     database.callRecords.where(id: callRecord.id).update(used: true)    }    routeCallToTarget(targetNumber, callerId) {     // The doud provider instructions are specific to a particular vendor, but always include what number to call and what number to call as     CloudProviderInstructions(      dialNumber: targetNumber,      useCallerId: callerId     )    }

CONCLUSION

While various embodiments have been described above, it should be understood that they have been presented by way of example and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and detail can be made therein without departing from the spirit and scope. In fact, after reading the above description, it will be apparent to one skilled in the relevant art(s) how to implement alternative embodiments. For example, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.

In addition, it should be understood that any figures which highlight the functionality and advantages are presented for example purposes only. The disclosed methodology and system are each sufficiently flexible and configurable such that they may be utilized in ways other than that shown.

Although the term “at least one” may often be used in the specification, claims and drawings, the terms “a”, “an”, “the”, “said”, etc. also signify “at least one” or “the at least one” in the specification, claims and drawings.

Finally, it is the applicant's intent that only claims that include the express language “means for” or “step for” be interpreted under 35 U.S.C. 112(f). Claims that do not expressly include the phrase “means for” or “step for” are not to be interpreted under 35 U.S.C. 112(f). 

1. A method, comprising: creating, using a server, a record on a remote server associating a caller's phone number, a provider phone number, and a target phone number; and placing, using a caller's device, a call to the provider phone number with the caller's phone number; wherein platform features available using the provider system are available during the call. 